package com.tfy.liquor.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.tfy.liquor.bean.MyPage;
import com.tfy.liquor.bean.ProductInfo;
import com.tfy.liquor.dao.ProductDetailDao;
import com.tfy.liquor.dao.ProductInfoDao;
import com.tfy.liquor.service.ProductImgService;
import com.tfy.liquor.service.ProductInfoService;
import com.tfy.liquor.util.DateUtil;
import com.tfy.liquor.util.FileUtil;
import com.tfy.liquor.util.SnowFlake;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;

@Service
public class ProductInfoServiceImpl implements ProductInfoService {
    @Autowired
    private ProductInfoDao productinfoDao;
    @Autowired
    private ProductDetailDao productDetailDao;
    @Autowired
    private ProductImgService productImgService;

    // 添加产品信息
    @Override
    public Boolean addProductInfo(ProductInfo productInfo) {
        // 设置创建时间为当前时间
        productInfo.setCreateTime(DateUtil.getNowDateTime());
        // 将图文详情中的base64图片信息转为图片文件保存到服务器
        productInfo.setDetails(FileUtil.getImgSrc(productInfo.getDetails()));
        // 保存图文信息
        productDetailDao.addProductDetail(productInfo);

        // 保存产品基本信息
        return productinfoDao.addProductInfo(productInfo) > 0;
    }

    // 修改产品信息
    @Override
    public Boolean editProductInfo(ProductInfo productInfo) {
        return productinfoDao.editProductInfo(productInfo) > 0;
    }

    // 查询产品列表
    @Override
    public MyPage getProductInfo(Integer pageNum, Integer pageSize, ProductInfo productInfo) {
        // 如果传入的参数是负数，则默认为1
        pageNum = Math.max(pageNum, 1);
        pageSize = pageSize < 1 ? 10 : pageSize;
        PageHelper.startPage(pageNum, pageSize);
        ArrayList<ProductInfo> list = productinfoDao.getProductInfo(productInfo);
        return new MyPage((Page) list);
    }

    // 查询app端首页展示产品信息
    @Override
    public MyPage getIndexProductInfo(Integer pageNum, Integer pageSize) {
        // 如果传入的参数是负数，则默认为1
        pageNum = Math.max(pageNum, 1);
        pageSize = pageSize < 1 ? 10 : pageSize;
        PageHelper.startPage(pageNum, pageSize);
        ArrayList<ProductInfo> list = productinfoDao.getIndexProductInfo();
        // 可以将结果转换为 Page ,
        return new MyPage((Page) list);
    }

    // 根据产品编号获取产品信息
    @Override
    public ProductInfo getProductInfoByProductId(String id) {
        if(null==id || "".equals(id.trim())){
            return null;
        }
        // 获取产品基本信息
        ProductInfo productInfo = productinfoDao.getProductInfoByProductId(id);
        // 如果产品不存在
        if (null==productInfo){
            return null;
        }
        // 根据产品id获取产品图片信息
        productInfo.setImgList(productImgService.getProductImg(id));
        // 获取产品id获取图文详情信息
        productInfo.setDetails(productDetailDao.getProductDetail(productInfo.getId()));
        return productInfo;
    }
}
